The present invention relates to techniques for determining and revising a time history for financial information to facilitate associated financial calculations.
Financial software, such as payroll software, accounting software, or income-tax software, is used by businesses to satisfy their regulatory and operational requirements. For example, using payroll software companies can generate paychecks for their employees.
Typically, financial software includes one or more data structures in a data layer that includes corporate and employee information, and one or more applications in an application layer which users interact with and which access information from the one or more data structures.
Information that is stored in the one or more data structures can include temporal information, i.e., information that varies over time. For example, an employee's marital status or work location (such as a city or state) can change over time. These changes can impact calculations that are performed using the financial software, such as those that occur when generating a paycheck.
Unfortunately, many existing data structures store information in a field that is overwritten when it is updated, thereby erasing temporal information. To overcome this problem, temporal information may need to be stored in multiple fields or in multiple data structures. Additionally, in order to retrieve temporal information, applications may need to perform multiple accesses, which may involve multiple data sources.
Consequently, in order to perform operations involving temporal information, an application developer requires knowledge about how the one or more data structures are implemented, such as how the information is stored in the one or more data structures, as well as knowledge about the temporal aspects of the information. However, this knowledge may be difficult to obtain. For example, the knowledge is likely to evolve over time as the one or more data sources are changed. Moreover, dealing with such evolving data can increase the expense of developing and updating the application.